home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / make / icmake-6.000 / icmake-6 / icmake / comp / enter.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-08  |  1.0 KB  |  37 lines

  1. /*
  2.                             E N T E R . C
  3. */
  4.  
  5. #include "iccomp.h"
  6.  
  7. void enter()
  8. {
  9.     register unsigned
  10.         n_defined;
  11.     register SYMBOL_
  12.         *sym;
  13.  
  14.     n_defined = entertab->n_defined;
  15.  
  16.     if (looksym(entertab) != n_defined)     /* look for symbol in active tab. */
  17.     {                                       /* message if multiply defined */
  18.         semantic("%s multiply defined", string);
  19.         return;
  20.     }
  21.  
  22.     if (entertab->n_allocated == n_defined) /* full table ? */
  23.         entertab->symbol =                  /* room for 20 more symbols */
  24.             xrealloc(entertab->symbol,
  25.                      (entertab->n_allocated += 20) * sizeof(SYMBOL_));
  26.  
  27.     sym = entertab->symbol + n_defined;
  28.  
  29.     sym->name = xstrdup(string);            /* set the name of the var */
  30.     sym->var.type = vartype;                /* set the type of the var */
  31.  
  32.     if (entertab == &global)                /* clear new global entry */
  33.         memset (&sym->var.vu, 0, sizeof(VAR_UNION_));
  34.  
  35.     entertab->n_defined++;                  /* next free */
  36. }
  37.